home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / termsorc.lha / Extras / Source / term-source.lha / termBeep.c < prev    next >
C/C++ Source or Header  |  1995-09-26  |  2KB  |  116 lines

  1. /*
  2. **    termBeep.c
  3. **
  4. **    Simple beep sound support routine
  5. **
  6. **    Copyright © 1990-1995 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12.     /* Beep():
  13.      *
  14.      *    Produce a simple decent beep sound.
  15.      */
  16.  
  17. VOID
  18. Beep()
  19. {
  20.     if(SoundConfig . Volume)
  21.     {
  22.         struct MsgPort *AudioPort;
  23.  
  24.             /* Create the IO reply port. */
  25.  
  26.         if(AudioPort = (struct MsgPort *)CreateMsgPort())
  27.         {
  28.             struct IOAudio *AudioRequest;
  29.  
  30.                 /* Create the audio IO info. */
  31.  
  32.             if(AudioRequest = (struct IOAudio *)CreateIORequest(AudioPort,sizeof(struct IOAudio)))
  33.             {
  34.                 STATIC UBYTE AnyChannel[] =
  35.                 {
  36.                     LEFT0F,LEFT1F,    RIGHT0F,RIGHT1F
  37.                 };
  38.  
  39.                 AudioRequest -> ioa_Request . io_Command            = ADCMD_ALLOCATE;
  40.                 AudioRequest -> ioa_Request . io_Flags                = ADIOF_NOWAIT | ADIOF_PERVOL;
  41.                 AudioRequest -> ioa_Request . io_Message . mn_Node . ln_Pri    = 127;
  42.                 AudioRequest -> ioa_Data                    = AnyChannel;
  43.                 AudioRequest -> ioa_Length                    = sizeof(AnyChannel);
  44.  
  45.                     /* Open audio.device */
  46.  
  47.                 if(!OpenDevice(AUDIONAME,0,AudioRequest,0))
  48.                 {
  49.                         /* Minimal sine wave. */
  50.  
  51.                     STATIC BYTE __chip SineWave[] =
  52.                     {
  53.                         90,
  54.                         127,
  55.                         90,
  56.                         0,
  57.                         -90,
  58.                         -127,
  59.                         -90,
  60.                         0
  61.                     };
  62.  
  63.                         /* Prepare to play a beep sound. */
  64.  
  65.                     AudioRequest -> ioa_Request . io_Command    = CMD_WRITE;
  66.                     AudioRequest -> ioa_Request . io_Flags        = ADIOF_PERVOL;
  67.                     AudioRequest -> ioa_Period            = SysBase -> ex_EClockFrequency / 3200;
  68.                     AudioRequest -> ioa_Volume            = (SoundConfig . Volume * (64 / 2)) / 100;
  69.                     AudioRequest -> ioa_Cycles            = 150;
  70.                     AudioRequest -> ioa_Data            = SineWave;
  71.                     AudioRequest -> ioa_Length            = sizeof(SineWave);
  72.  
  73.                         /* Play it. */
  74.  
  75.                     BeginIO(AudioRequest);
  76.                     WaitIO(AudioRequest);
  77.  
  78.                         /* Close audio.device */
  79.  
  80.                     CloseDevice(AudioRequest);
  81.                 }
  82.  
  83.                     /* Free the audio request. */
  84.  
  85.                 DeleteIORequest(AudioRequest);
  86.             }
  87.  
  88.                 /* Free the IO reply port. */
  89.  
  90.             DeleteMsgPort(AudioPort);
  91.         }
  92.     }
  93. }
  94.  
  95.     /* BellSignal():
  96.      *
  97.      *    Your whole bell signal routine (visible + audible).
  98.      */
  99.  
  100. VOID
  101. BellSignal()
  102. {
  103.         /* Handle the visual part. */
  104.  
  105.     if(Config -> TerminalConfig -> BellMode != BELL_AUDIBLE)
  106.     {
  107.         if(StatusProcess)
  108.             Signal(StatusProcess,SIG_BELL);
  109.     }
  110.  
  111.         /* Let it beep. */
  112.  
  113.     if(Config -> TerminalConfig -> BellMode == BELL_AUDIBLE || Config -> TerminalConfig -> BellMode == BELL_BOTH)
  114.         SoundPlay(SOUND_BELL);
  115. }
  116.